#ifndef PACKET_H
#define PACKET_H

namespace Message{

//===========================================================================
#pragma pack( push, 1 )
    
//===========================================================================
struct Header
{
    char  version;
    short type;
    int   user;

    Header( void )
        : version( 0 )
        , type(    0 )
        , user(    0 )
    {}
};

//===========================================================================
struct Packet : public Header
{
    const char * payload;

    Packet( void )
        : payload( NULL )
    {}
};

//===========================================================================
#pragma pack( pop )

//===========================================================================
unsigned Parse(
    const char *   ptr,
          unsigned size,
          Packet & packet
);

}; // end of namespace Message

#endif // PACKET_H